package com.example.web.mapper;

import com.example.web.entity.InteractionRecord;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

@Mapper
public interface InteractionRecordMapper {
    
    /**
     * 根据ID查询互动记录
     */
    InteractionRecord findById(@Param("id") Long id);
    
    /**
     * 分页查询互动记录列表
     */
    List<InteractionRecord> findPage(@Param("offset") Integer offset, 
                                   @Param("limit") Integer limit,
                                   @Param("interactionType") String interactionType,
                                   @Param("customerId") Long customerId,
                                   @Param("creatorId") Long creatorId);
    
    /**
     * 查询总数
     */
    Integer countTotal(@Param("interactionType") String interactionType,
                      @Param("customerId") Long customerId,
                      @Param("creatorId") Long creatorId);
    
    /**
     * 插入互动记录
     */
    void insert(InteractionRecord interactionRecord);
    
    /**
     * 更新互动记录
     */
    void update(InteractionRecord interactionRecord);
    
    /**
     * 删除互动记录
     */
    void deleteById(@Param("id") Long id);
    
    /**
     * 根据客户ID查询互动记录
     */
    List<InteractionRecord> findByCustomerId(@Param("customerId") Long customerId);
    
    /**
     * 统计指定客户在指定时间范围内的互动次数
     */
    Integer countInteractionsByCustomerAndDateRange(@Param("customerId") Long customerId,
                                                   @Param("startDate") LocalDateTime startDate,
                                                   @Param("endDate") LocalDateTime endDate);
    
    /**
     * 获取指定客户的最后一次联系时间
     */
    String getLastContactTime(@Param("customerId") Long customerId);
}